// TermQuery.java
package com.tbynet.jwp.repository.dto.query;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.List;

/**
 * 分类项查询DTO
 * 对应WordPress的get_terms函数参数
 */
public class TermQuery implements Serializable {
    private static final long serialVersionUID = 1L;

    // 分类项ID列表
    private List<BigInteger> termIds;

    // 分类项名称
    private String name;

    // 分类项别名
    private String slug;

    // 分类法类型列表
    private List<String> taxonomies;

    // 父级分类项ID
    private BigInteger parentId;

    // 是否包含空分类项（没有文章的分类项）
    private Boolean hideEmpty;

    // 返回字段
    private List<String> fields;

    // 排序字段
    private String orderBy;

    // 排序方向：ASC/DESC
    private String order;

    // 分页大小
    private Integer pageSize;

    // 页码
    private Integer pageNumber;

    // 搜索关键词
    private String search;

    public List<BigInteger> getTermIds() {
        return termIds;
    }

    public void setTermIds(List<BigInteger> termIds) {
        this.termIds = termIds;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSlug() {
        return slug;
    }

    public void setSlug(String slug) {
        this.slug = slug;
    }

    public List<String> getTaxonomies() {
        return taxonomies;
    }

    public void setTaxonomies(List<String> taxonomies) {
        this.taxonomies = taxonomies;
    }

    public BigInteger getParentId() {
        return parentId;
    }

    public void setParentId(BigInteger parentId) {
        this.parentId = parentId;
    }

    public Boolean getHideEmpty() {
        return hideEmpty;
    }

    public void setHideEmpty(Boolean hideEmpty) {
        this.hideEmpty = hideEmpty;
    }

    public List<String> getFields() {
        return fields;
    }

    public void setFields(List<String> fields) {
        this.fields = fields;
    }

    public String getOrderBy() {
        return orderBy;
    }

    public void setOrderBy(String orderBy) {
        this.orderBy = orderBy;
    }

    public String getOrder() {
        return order;
    }

    public void setOrder(String order) {
        this.order = order;
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(Integer pageNumber) {
        this.pageNumber = pageNumber;
    }

    public String getSearch() {
        return search;
    }

    public void setSearch(String search) {
        this.search = search;
    }
}